MSSQL - AdventureWorks 데이터베이스를 백업하기
MSSQL 에서 제공하는 AdventureWorks 데이터베이스에 대해서 백업을 진행해보겠습니다.
아래 단계에서는 많은 작업들을 추가할 수 있으나 사진으로는 최대한 간결하게 포현하였습니다.
1. AdventureWorks 데이터베이스 우클릭 - 태스크 - 백업으로 들어갑니다.
2. 백업 유형은 전체로, 백업할 위치를 설정한 후 확인을 눌러줍니다.
- 데이터베이스 복구 모델이 단순 모델만 아니라면 트랜잭션 로그 백업도 할 수 있습니다.
트랜잭션 로그백업을 원하는 경우에는 백업 유형을 트랜잭션 로그로만 바꿔주세요.
- 미디어 옵션에서 더 많은 설정을 할 수 있습니다. 여기서는 설명하지 않습니다.
3. 백업이 완료되었습니다.
4. 트랜잭션 로그도 2 ~ 3 번 방법으로 백업해 주세요.
5. 백업한 경로로 가면 백업한 파일이 있습니다.
MSSQL - AdventureWorks 데이터베이스를 복원하기
AdventureWorks 데이터베이스가 사용을 못하게 되었을 때, 백업한 파일로 복원을 진행해보겠습니다.
먼저 AdventureWorks 데이터베이스를 없어야 하기 때문에 삭제해 주세요.
1. 데이터베이스 우클릭 - 데이터베이스 복원을 클릭합니다.
2. 장치를 선택후 ... 네모박스를 클릭합니다.
3. 추가버튼을 눌러 백업받은 데이터파일과 로그파일을 추가합니다.
4. 데이터베이스 복원을 위해 설정된 데이터베이스 명과 파일들이 올바른지 확인 합니다.
- 옵션에서 더 많은 설정을 할 수 있지만 여기서는 설명하지 않을께요.
5. 복원이 완료되었습니다.
6. 해당 데이터베이스가 복원되었는지 확인합니다.
데이터베이스가 안보이는 경우 새로고침 해주세요.
위의 백업 / 복구 작업을 T-SQL 로 정리하기
1. AdventureWorks 데이터베이스를 백업합니다.
BACKUP DATABASE AdventureWorks TO DISK=N'C:\Backup\AdventureWorks.bak';
BACKUP LOG AdventureWorks TO DISK=N'C:\Backup\AdventureWorks_log.bak';
2. AdventureWorks 데이터베이스를 복구합니다.
RESTORE DATABASE AdventureWorks FROM DISK=N'C:\Backup\AdventureWorks.bak' WITH NORECOVERY;
RESTORE LOG AdventureWorks FROM DISK=N'C:\Backup\AdventureWorks_log.bak'
모델의 종류 / 백업 방식 및 옵션 / 복구 및 옵션 은 아래 url 을 참고해주세요.
https://mozi.tistory.com/294 ( 백업 시 백업 압축 하기, 비상 시 로그 백업하기 등등 )
https://mozi.tistory.com/297 ( 복구 시 사용자 제한 걸기, 복구 시 복구 파일 경로 설정하기 등등 )
모든 ONLINE 데이터베이스 백업하기
모든 데이터베이스를 위처럼 하나하나 씩 누르기 어렵다면, 아래 쿼리를 수행해서 백업을 한번에 할 수 있습니다.
단, backupdataPath 와 backuplogPath 의 변수값은 환경에 맞게 수정해 주어야 합니다.
( 데이터베이스 복구 모델에 따라서, LOG 백업이 안될 수도 있는데 이 부분은 직접 설정해 주어야 합니다. )
EXEC master..sp_msforeachdb'
USE [?]
IF "?" "tempdb"
BEGIN
DECLARE @dbname varchar(100)
DECLARE @backupdataPath varchar(150)
DECLARE @backuplogPath varchar(150)
DECLARE @backupdataquery varchar(500)
DECLARE @backuplogquery varchar(500)
set @dbname = DB_NAME()
set @backupdataPath = ''C:\Backup''
set @backuplogPath = ''C:\Backup''
set @backupdataQuery = ''BACKUP DATABASE '' + @dbname + '' TO DISK = N'''''' + @backupdataPath + ''\'' + @dbname + ''.bak'''' WITH INIT;''
set @backuplogQuery = ''BACKUP LOG '' + @dbname + '' TO DISK = N'''''' + @backuplogPath + ''\'' + @dbname + ''_log.bak'''' WITH INIT;''
exec (@backupdataQuery)
exec (@backuplogQuery)
END
'